/**
 * 通用接口返回数据类型
 */
export class ApiResponse<T> {
  success: boolean; // 是否成功
  message: string; // 提示信息
  statusCode: number; // HTTP 状态码
  data?: T; // 返回的数据（可选）

  constructor(success: boolean, message: string, statusCode: number, data?: T) {
    this.success = success;
    this.message = message;
    this.statusCode = statusCode;
    this.data = data;
  }

  /**
   * 成功响应
   * @param data 返回的数据
   * @param message 提示信息
   * @param statusCode 状态码（默认 200）
   */
  static success<T>(
    data: T,
    message = '操作成功',
    statusCode = 200,
  ): ApiResponse<T> {
    return new ApiResponse(true, message, statusCode, data);
  }

  /**
   * 失败响应
   * @param message 错误信息
   * @param statusCode 状态码（默认 400）
   */
  static error<T>(message = '操作失败', statusCode = 400): ApiResponse<T> {
    return new ApiResponse(false, message, statusCode);
  }
}
